
declare module Microsoft.Office.WebExtension {

    export class ProjectDocument extends Microsoft.Office.WebExtension.Document {
        /** Asynchronously adds an event handler for the task selection changed event in a ProjectDocument object. */
        addHandlerAsync: (eventType: EventType, options?: { handler?: any; asyncContext?: any; }, callback?: (result: AsyncResult) => void) => void;

        /** Asynchronously gets the value of the specified field in the active project. */
        getProjectFieldAsync: (fieldId: ProjectProjectFields, callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void;

        /** Asynchronously gets the value of the specified field for the specified resource. */
        getResourceFieldAsync: (resourceId: string, fieldId: ProjectResourceFields, callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void ;

        ///** Asynchronously gets the data that is contained in the current selection of one or more cells in the Gantt chart. */
        getSelectedDataAsync: (coercionType: CoercionType, options?: { valueFormat?: ValueFormat; filterType?: FilterType; asyncContext?: any; }, callback?: (result: AsyncResult) => void) => void ;

        /** Asynchronously gets the GUID of the selected resource. */
        getSelectedResourceAsync: (callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void ;

        /** Asynchronously gets the GUID of the selected task. */
        getSelectedTaskAsync: (callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void;

        /** Asynchronously gets the view type and name of the active view. */
        getSelectedViewAsync(callback: (result: AsyncResult) => void, options?: { asyncContext?: any; });

        /** Asynchronously gets the specified task name, the resources that are assigned to the task, and the ID of the task in the synchronized SharePoint task list. */
        getTaskAsync: (taskId: string, callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void;

        /** Asynchronously gets the value of the specified field for the specified task. */
        getTaskFieldAsync: (taskId: string, fieldId: ProjectTaskFields, callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void;

        /** Asynchronously gets the URL of the synchronized SharePoint task list. */
        getWSSUrlAsync: (callback: (result: AsyncResult) => void, options?: { asyncContext?: any; }) => void;

        ///** Asynchronously removes an event handler for the task selection changed event in a ProjectDocument object. */
        removeHandlerAsync: (eventType: EventType, options?: { handler?: any; asyncContext?: any; }, callback?: (result: AsyncResult) => void) => void;
    }
}